﻿//467. 环绕字符串中唯一的子字符串
//定义字符串 base 为一个 "abcdefghijklmnopqrstuvwxyz" 无限环绕的字符串，所以 base 看起来是这样的：
//"...zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd....".
//给你一个字符串 s ，请你统计并返回 s 中有多少 不同非空子串 也在 base 中出现。


class Solution {
public:
    int findSubstringInWraproundString(string s)
    {
        int n = s.size();
        vector<int> dp(26, 0);
        int k = 0;
        for (int i = 0; i < n; i++)
        {
            if (i && (s[i] - s[i - 1] + 26) % 26 == 1)
            {
                ++k;
            }
            else
            {
                k = 1;
            }
            dp[s[i] - 'a'] = max(dp[s[i] - 'a'], k);
        }
        return accumulate(dp.begin(), dp.end(), 0);
    }
};